4.2.1 RRN浮動小数点数加算
浮動小数点数加算命令について、まずL1BM命令の 4 要素縮約の動作を述べる。それぞれの要素の仮数部
について、MSBにhidden bitを補い、またLSBには 3 ビットの 0 を補う。その後指数部を比較し、最大指
数でない要素の仮数部をその差だけ右シフトする。その際、指数差が 4 以上あってLSBに補った 3 ビットを
はみ出した場合は、最近接偶数丸め(round to nearest even)が行われる。その後仮数部を加算縮約し、適切
な精度への最近接偶数丸めが行われる。ここで適切な精度とは、単精度演算で精度縮減が指定されており 16
要素縮約における 1 段目なら単精度であり、それ以外なら出力の精度と同じである。丸め結果を正規化して 4
要素縮約の出力とする。最近接偶数丸めは繰り上がりが起きうるので、結果の指数は、指数部比較の際に最大
であった指数に(4要素分で)2を足した値よりもさらに 1 大きくなりうることに注意する。
L1BM命令の 16 要素縮約であればこれを 2 段行って出力とする。よって、 16 要素出力の場合でも中間的に
は倍精度または単精度の正規な浮動小数点数が計算されていることに注意する。加算後の丸め先の精度が複雑
であるが、これはつまり、精度縮減が指定されている場合でも、いったん単精度に丸めてから半精度に丸める
のではなく、一回で半精度に丸めるということである。
MV命令とL2BM命令では、要素数が異なること、半精度縮約が存在すること、精度縮減が存在しないこ
とを除き、L1BM命令の 4 要素縮約と同じである。すなわち、hidden bitとLSBの 3 ビットを補って指数部
を合わせ、丸めた上で加算し、再度丸めて正規化を行う。
8 要素の縮約が行われるMV命令では、L1BM命令の 16 要素縮約同様の 2 段階の縮約が行われる。この場
合もL1BM命令同様、段階間ではいずれかの精度の正規な浮動小数点数が計算されている。